This embodiments are related to efficient management of data storage blocks of thin-provisioned storage that uses virtualization technology to give the appearance of having more storage space than is actually available. More specifically, status values are employed to facilitate granular management of the data storage blocks, including both allocation and reclamation of data storage blocks to achieve higher efficiency when using thin-provisioned storage.
In data management, a data storage block is a group of storage bytes on a storage device that are manipulated as units. The size of a storage block is typically 512 bytes, although the size can vary. Storage is typically assigned as logical disks (or volumes). Each logical disk has a size. Blocks within a logical disk are accessed through a logical block address (LBA) within the containing logical disk. Traditional storage devices pre-allocate physical space to a logical disk for all of its blocks. This can be wasteful because the application using this logical disk may not actually write data to many or even most of the blocks within the logical disk, or does so only after a long period of time. To address this inefficiency, thin-provisioning storage devices allocate a storage block only when data is written to its corresponding logical block address. Such allocation is usually done in a larger unit, e.g. greater than a data block, known as partition, although other terms may be used by different storage products, whose size can vary from hundreds of kilobytes to gigabytes of storage space. The physical space of all blocks of a partition is allocated when any block within the partition is written.
Once a partition on the storage controller is allocated physical space, the allocated space remains allocated until the data storage system informs the storage controller that all the blocks within the partition can be reclaimed. State-of-the-art data storage systems do not identify free blocks that already have claimed space. Free data blocks that contain claimed space are indistinguishable from free data blocks that contain no claimed space according to the storage controller. Free blocks with claimed space can remain unused while other free data blocks without claimed space become used, causing extra physical storage to be allocated.